<?php
require_once "based.php";
require_once 'modelo.php';

class InscripcionProc
{
    private $disciplina, $formulario, $previos, $nuevos, $usuario;
    
    function __construct($disciplina, $formulario, $pre_inscriptos, $idUsuario)
    {
        $this->disciplina = $disciplina;
        $this->formulario = $formulario;
        $this->previos = $pre_inscriptos;
        $this->nuevos = array();
        $this->usuario = $idUsuario;
    }
    
    
    function procesar()
    {
        $procesados = array();
        $r=0;
        for($i=0;$i<$this->disciplina->getMaximo();$i++)
        {
            $inscripto = $this->formulario[$i];
            if($inscripto['nombre'].$inscripto['apellido'].$inscripto['email'].$inscripto['legajo']!="" || $inscripto['id']!="" && $inscripto['borrar'] == 1)
            {
                $aux = new Inscripto($inscripto['id'], 
                                 $inscripto['nombre'], 
                                 $inscripto['apellido'], 
                                 $inscripto['email'], 
                                 $inscripto['legajo']);
                if($inscripto['id']!="" && $inscripto['borrar'] == 1)
                {
                    $this->borrar($aux);
                    $procesados[$r]['inscripto']=$inscripto;
                    $procesados[$r]['mensaje']= "Borrado exitosamente";
                    $procesados[$r++]['error']= false;
                }
                else if($inscripto['id']!="" && $inscripto['borrar'] == 0)
                {
                    foreach($this->previos as $p)
                        if($p->getId()==$aux->getId() && $p!=$aux)
                        {
                            if($aux->esValido())
                            {
                                $this->actualizar ($aux);
                                $procesados[$r]['inscripto']=$inscripto;
                                $procesados[$r]['mensaje']= "Actualizado exitosamente";
                                $procesados[$r++]['error']= false;
                            }
                            else 
                            {
                                $procesados[$r]['inscripto']=$inscripto;
                                $procesados[$r]['mensaje']= $aux->mensajeNoValido();
                                $procesados[$r++]['error']= true;
                            }
                            break;
                        }
                }
                else if((!isset($inscripto['borrar']) || $inscripto['borrar'] != 0)&& $aux->esValido())
                {    
                    $procesados[$r]['inscripto']=$inscripto;
                    if($this->insertar ($aux))
                    {
                        $procesados[$r]['mensaje']= "Agregado exitosamente";
                        $procesados[$r++]['error']= false;
                    }
                    else
                    {
                        $procesados[$r]['mensaje']= "Excede el máximo permitido";
                        $procesados[$r++]['error']= true;
                    }
                }
                else if (!$aux->esValido())
                {
                    $procesados[$r]['inscripto']=$inscripto;
                    $procesados[$r]['mensaje']= $aux->mensajeNoValido();
                    $procesados[$r++]['error']= true;
                }
                else
                {
                    $procesados[$r]['inscripto']=$inscripto;
                    $procesados[$r]['mensaje']= "Error";
                    $procesados[$r++]['error']= true;
                }
                unset($aux);
            }
        }
        return $procesados;
    }
    function insertar($ins)
    {
        $db = new BaseDatos(DBHOST, DBUSER, DBPASS, DBBASE);
        
        $sql ="SELECT count(*) < disciplinas.maximo AS permitido
              FROM inscriptos INNER JOIN disciplinas ON disciplinas.id = inscriptos.id_disciplina
              WHERE id_usuario = ".$this->usuario." AND id_disciplina = ".$this->disciplina->getId();
        $datos = $db->selectAsociativo($sql);
        if($datos[0]['permitido'])
        {
            $sql = "INSERT INTO inscriptos(legajo, apellido, nombre, email, id_usuario, id_disciplina)
                VALUES ('".mysql_real_escape_string($ins->getLegajo())."', 
                        '".mysql_real_escape_string($ins->getApellido())."',
                        '".mysql_real_escape_string($ins->getNombre())."',
                        '".mysql_real_escape_string(strtolower($ins->getEmail()))."',
                        ".$this->usuario.", ".$this->disciplina->getId().")";
            $db->insertUpdate($sql);
            unset($db);
            return true;
        }
        else
        {
            unset($db);
            return false;
        }
    }
    function actualizar($ins)
    {
        $db = new BaseDatos(DBHOST, DBUSER, DBPASS, DBBASE);
        $sql = "UPDATE inscriptos
                      SET legajo = '".mysql_real_escape_string($ins->getLegajo())."',
                          apellido = '".mysql_real_escape_string($ins->getApellido())."',
                          nombre = '".mysql_real_escape_string($ins->getNombre())."',
                          email = '".mysql_real_escape_string(strtolower($ins->getEmail()))."'
                      WHERE id = ".($ins->getId()+0)."
                        AND id_usuario = ".($this->usuario+0)."
                        AND id_disciplina  = ".($this->disciplina->getId()+0);
        $db->insertUpdate($sql);
        unset($db);
    }
    function borrar($ins)
    {

        $db = new BaseDatos(DBHOST, DBUSER, DBPASS, DBBASE);
        $sql = "DELETE FROM  inscriptos
                      WHERE id = ".($ins->getId()+0)."
                        AND id_usuario = ".($this->usuario+0)."
                        AND id_disciplina  = ".($this->disciplina->getId()+0);
        $db->insertUpdate($sql);
        unset($db);
    }
}

class InscripcionCTRL
{
    private $existeDisciplina, $inscriptos, $disciplina;
    function __construct($idDisciplina, $idUsuario)
    {
        $db = new BaseDatos(DBHOST, DBUSER, DBPASS, DBBASE);
        $datos = $db->selectAsociativo("SELECT * FROM disciplinas WHERE id = $idDisciplina");
        unset($db);
        if($this->existeDisciplina = ($datos !== false))
        {
            $this->disciplina = new Disciplina ($datos[0]['id'], utf8_encode($datos[0]['nombre']), $datos[0]['minimo'], $datos[0]['maximo']);
            $inscripcioneDisciplina = new InscripcionesDisciplina($this->disciplina, $idUsuario);
            $this->inscriptos = $inscripcioneDisciplina->getInscriptos();
        }


    }
    public function getInscriptos() {
        return $this->inscriptos;
    }

        
    function validarDisciplina()
    {
        return $this->existeDisciplina;
    }
    
    public function getDisciplina() {
        return $this->disciplina;
    }



}

class InscripcionesDisciplina
{
    private $inscriptos;
    function __construct($disciplina, $idUsuario) 
    {

        $this->inscriptos = array();
        
        $db = new BaseDatos(DBHOST, DBUSER, DBPASS, DBBASE);
        
        $datos = $db->selectAsociativo("SELECT * FROM inscriptos WHERE id_usuario = $idUsuario AND id_disciplina = ".$disciplina->getId());
        unset($db);
        
        if($datos !== false)
            foreach($datos as $ins)
                $this->inscriptos[] = new Inscripto ($ins['id'], $ins['nombre'], $ins['apellido'], $ins['email'], $ins['legajo']);
    }


    public function getInscriptos() {
        return $this->inscriptos;
    }


}



?>
